﻿#ifndef SPINBOX_H
#define SPINBOX_H

#include <QSpinBox>
#include <QPushButton>
#include <QPainter>
#include <QStyleOptionSpinBox>

// 自定义按钮类，用于绘制箭头
class ArrowButton : public QPushButton
{
    Q_OBJECT

public:
    explicit ArrowButton(bool isUp, QWidget *parent = nullptr);

    // 设置箭头背景颜色
    void setArrowBackground(const QColor &color);

    // 设置箭头颜色
    void setArrowColor(const QColor &color);

protected:
    void paintEvent(QPaintEvent *event) override;

private:
    bool isUp; // 是否是上箭头
    QColor arrowBackground; // 箭头背景颜色
    QColor arrowColor; // 箭头颜色
};

// 自定义 SpinBox 类
class SpinBox : public QSpinBox
{
    Q_OBJECT

public:
    explicit SpinBox(QWidget *parent = nullptr);

    // 设置箭头背景颜色
    void setArrowBackground(const QColor &color);

    // 设置箭头颜色
    void setArrowColor(const QColor &color);

protected:
    void paintEvent(QPaintEvent *event) override;
    void resizeEvent(QResizeEvent *event) override;

private slots:
    void stepUp();
    void stepDown();

private:
    ArrowButton *upButton;   // 上箭头按钮
    ArrowButton *downButton; // 下箭头按钮

    void updateButtonGeometry();
};

#endif // SPINBOX_H
